/*******************************************************************************
 *    版权信息   ： @copyright Copyright 2014-2021 chnenergy All Right Reserved
 *    作   者   ： hhz
 *    版   本   ： 1.1
 *    创建时间   ：2024/4/12
 *    最后修改日期   ： 2024/4/12
 *    最后修改人员   ： hhz
 ******************************************************************************/
package cn.neo.hhrpc.core.filter;

import cn.neo.hhrpc.core.api.Filter;
import cn.neo.hhrpc.core.api.RpcContext;
import cn.neo.hhrpc.core.api.RpcRequest;
import cn.neo.hhrpc.core.api.RpcResponse;

import java.util.Map;

/**
 * 模块编号：chnenergy-ParameterFilter
 * 作    者：hhz
 * 创建时间：2024/4/12
 * 版    本：1
 * 描    述：业务描述说明
 * 修改人员：hhz
 * 修改时间：2024/4/12
 * 修改描述：修改描述
 **/
public class ParameterFilter implements Filter {
    @Override
    public Object prefilter(RpcRequest request) {
        // 从请求的上下文中获取参数，并添加到请求参数中
        final Map<String, String> params = RpcContext.ContextParameters.get();
        if(!params.isEmpty()) {
            request.getParams().putAll(params);
        }
        return null;
    }

    @Override
    public Object postfilter(RpcRequest request, RpcResponse response, Object result) {
        //为什么要 clear():会导致当前线程被服用，第二处理其他请求，带了上一次的参数，这就是所谓的上下文参数污染
        RpcContext.ContextParameters.get().clear();
        return null;
    }
}
